The present invention relates to computing systems and, more specifically, relates to minicomputers which may be adapted and enhanced to permit them to operate with applications programming in a language other than that for which they were orginally designed.
As it often happens in American industry, one corporation emerges as being the preeminent one in a specific area of technology. This has been the case, in a well-chronicled rise, whereby International Business Machines (IBM) has obtained the overwhelming leadership in the field of computing systems and data processing equipment. For example, in the case of the IBM series 370/360 systems, it has been estimated that there are now 50,000 such units installed and operating worldwide. The majority of this number are located in the United States.
It is, of course, obvious that such computing systems represent to the user a substantial investment in hardware, what may not be quite as obvious is that an additional investment, frequently much greater than the initial investment, is also required. This additional investment is for the software which is required in order to use such hardware. This software is frequently termed applications programming. Applications programming may be generated by the user himself or may be supplied by independent contractors, sometimes termed "software houses". In this regard, the situation often arises wherein, after a user has made a substantial investment in the applications programming, he then becomes almost inexorably linked with the hardware manufacturer who produced the initial system, in this example, IBM. This is so because, if the user elects to switch to a computing system which is not compatible with his original choice, the cost to convert the already prepared software is prohibitive.
There have been at least two different approaches taken in an attempt to alleviate this requirement to continue with the originally chosen line of equipment. Such approaches, of course, have been advanced by competitors of IBM, in order to attempt to obtain a portion of this vast computer hardware market. The first such approach has been to provide "plug-compatible" hardware and its attendant software. In other words, these systems require no change to be made in either the applications software, the operating systems, or the peripheral hardware, since the user can literally unplug the original hardware and plug in the new hardware. It then becomes a simple matter to load the user's program into the hardware and run the applications program. A major problem or obstacle in the plug-compatible approach is that the new hardware frequently costs almost the same as the original hardware, which it is intended to replace. Accordingly, there is some market resistance to changing brands for only a minimum hardware cost savings and a slight increase in performance.
A second approach in attempting to obtain a portion of the hardware market has been to offer a nonplug-compatible system, which will execute the identical applications programs, using the language (instruction set) of the original hardware. Such nonplug-compatible systems must therefore contain some means to translate the original instruction into the language of the new system. This type of computing system is generally termed an emulator. Once again, in order to make this type of system attractive in the marketplace, a substantial price differential from the original computing system is required and, as may be expected, any such price differential involves some performance tradeoffs. Such performance tradeoffs may be frequently found in the necessity to have the user convert portions of the applications programming code in order to make the system workable. It is this second approach which has been followed by the present invention and the manner in which this is achieved will become evident from the following description of the invention.
Accordingly, it is a principal object of the present invention to provide a method and apparatus for adapting and enhancing an existing computing system so as to permit it to execute applications programming written in a language (instruction set) of a different computing system.